home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Misc / msql-1.0.6 / src / msql / msql_priv.h < prev    next >
C/C++ Source or Header  |  1995-05-28  |  5KB  |  298 lines

  1. /*
  2. **    msql_priv.h    - Private (internal) definitions
  3. **
  4. **
  5. ** Copyright (c) 1993  David J. Hughes
  6. **
  7. ** Permission to use, copy, and distribute for non-commercial purposes,
  8. ** is hereby granted without fee, providing that the above copyright
  9. ** notice appear in all copies and that both the copyright notice and this
  10. ** permission notice appear in supporting documentation.
  11. **
  12. ** This software is provided "as is" without any expressed or implied warranty.
  13. **
  14. ** ID = "msql_priv.h,v 1.3 1994/08/19 08:03:14 bambi Exp"
  15. */
  16.  
  17. #include "version.h"
  18.  
  19.  
  20. /***************************************************************************
  21. *    Configuration parameters 
  22. */
  23.  
  24.  
  25.  
  26. #define MAX_FIELDS    50        /* Max fields per query */
  27. #define MAX_CON        24        /* Max connections */
  28. #define BUF_SIZE    (256*1024)    /* Read buf size if no mmap() */
  29. #define NAME_LEN    20        /* Field/table name length */
  30. #define    PKT_LEN        (32*1024)    /* Max size of client/server packet */
  31. #define    CACHE_SIZE    8        /* Size of table cache */
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. /***************************************************************************
  39. ** Internal structures
  40. */
  41.  
  42. /*
  43. ** Identifier format.  Multi-part to enable stuff like "emp.name"
  44. */
  45. typedef struct ident_s {
  46.     char    seg1[NAME_LEN],
  47.         seg2[NAME_LEN];
  48. } ident_t;
  49.  
  50.  
  51. /* 
  52. ** Field value storage union 
  53. */
  54. typedef struct val_s {
  55.     union val_u {            
  56.         int    intVal;
  57.         u_char    *charVal;
  58.         double    realVal;
  59.         ident_t    *identVal;
  60.     } val;
  61.     int    type,
  62.         nullVal,
  63.         dataLen;
  64. } val_t;
  65.  
  66.  
  67. typedef struct tname_s {
  68.     char    name[NAME_LEN + 1],
  69.         cname[NAME_LEN + 1];
  70.     struct    tname_s *next;
  71. } tname_t;
  72.  
  73. /* 
  74. ** Internal field list element
  75. */
  76. typedef struct field_ps {        
  77.     char    table[NAME_LEN],
  78.         name[NAME_LEN];
  79.     val_t     *value;
  80.     int    type,
  81.         length,
  82.         null,
  83.         flags;
  84.         
  85.     struct    field_ps *next;
  86. } field_t;
  87.  
  88.  
  89. /* 
  90. ** Where clause list element 
  91. */
  92. typedef struct cond_s {            
  93.     char    table[NAME_LEN + 1],
  94.         name[NAME_LEN + 1];
  95.     val_t     *value;
  96.     int    op,
  97.         bool,
  98.         type,
  99.         length;
  100.     struct    cond_s *next;
  101. } cond_t;
  102.  
  103.  
  104.  
  105. typedef struct tlist_s {
  106.     char    name[NAME_LEN + 1];
  107.     struct    tlist_s *next;
  108. } tlist_t;
  109.  
  110.  
  111. /* 
  112. ** Order clause list element  (not used as yet!)
  113. */
  114. typedef struct order_s {        
  115.     char    table[NAME_LEN + 1],
  116.         name[NAME_LEN + 1];
  117.     int    dir,
  118.         type,
  119.         length;
  120.     struct    order_s *next;
  121. } order_t;
  122.  
  123.  
  124.  
  125.  
  126. /* 
  127. ** Table cache entry struct 
  128. */
  129. typedef struct cache_s {        
  130.     char    DB[NAME_LEN + 1],
  131.         cname[NAME_LEN + 1],
  132.         table[NAME_LEN + 1],
  133.         resInfo[4 * NAME_LEN]; /* used for debugging info */
  134.     u_char    *rowBuf,
  135.         *keyBuf;
  136.     int    age,
  137.         stackFD,
  138.         dataFD,
  139.         keyFD,
  140.         rowLen,
  141.         keyLen,
  142.         result;
  143.     field_t    *def;
  144.  
  145. #ifdef    HAVE_MMAP
  146.     int    remapData,
  147.         remapKey,
  148.         remapStack;
  149.     caddr_t    dataMap,
  150.         keyMap,
  151.         stackMap;
  152.     off_t    size,
  153.         keySize,
  154.         stackSize;
  155. #else
  156.     char    readBuf[BUF_SIZE];
  157.         u_int   firstRow, 
  158.         lastRow;
  159.  
  160. #endif
  161.     
  162. } cache_t;
  163.  
  164.  
  165.  
  166. typedef struct pkey_s {
  167.     char    *table,
  168.         *name;
  169.     val_t    *value;
  170.     int    type,
  171.         length,
  172.         op;
  173. } pkey_t;
  174.  
  175.  
  176.  
  177.  
  178.  
  179. typedef struct cinfo_s {
  180.     char    *db,
  181.         *host,
  182.         *user;
  183.     int     access;
  184.     struct  sockaddr_in local, remote;
  185. } cinfo_t;
  186.  
  187.  
  188.  
  189.  
  190. /***************************************************************************
  191. *    External variables  (var's defined in msql_proc.c)
  192. */
  193.  
  194. #ifndef MSQL_ADT
  195.  
  196.  
  197. extern    int    command,
  198.         notnullflag,
  199.         keyflag;
  200. extern    char    *arrayLen;
  201. extern    cond_t    *condHead;
  202. extern    field_t    *fieldHead;
  203. extern    order_t    *orderHead;
  204. extern    tlist_t    *tableHead;
  205.  
  206. #endif
  207.  
  208.  
  209.  
  210.  
  211.  
  212. /***************************************************************************
  213. *    YACC stack type
  214. */
  215. #ifdef YYSTYPE
  216. #  undef YYSTYPE
  217. #endif
  218. typedef char    * C_PTR;
  219. #define YYSTYPE C_PTR
  220.  
  221.  
  222.  
  223.  
  224. /***************************************************************************
  225. *    Macros and other constants
  226. */
  227.  
  228.  
  229. #define    EQ_OP        1
  230. #define    LT_OP        2
  231. #define    GT_OP        3
  232. #define    NE_OP        4
  233. #define    LE_OP        5
  234. #define GE_OP        6
  235. #define LIKE_OP        7
  236. #define NOT_LIKE_OP    8
  237.  
  238. #define    NO_BOOL        0
  239. #define    AND_BOOL    1
  240. #define    OR_BOOL        2
  241.  
  242.  
  243. #define    MEM_ALIGN    4
  244.  
  245. #define QUIT        1
  246. #define    INIT_DB        2
  247. #define QUERY        3
  248. #define DB_LIST        4
  249. #define TABLE_LIST    5
  250. #define FIELD_LIST    6
  251. #define    CREATE_DB    7
  252. #define DROP_DB        8
  253. #define RELOAD_ACL    9
  254. #define SHUTDOWN    10
  255.  
  256. #define NO_REMAP    0
  257. #define DATA_REMAP    1
  258. #define KEY_REMAP    2
  259. #define STACK_REMAP    4
  260. #define FULL_REMAP    0xffff
  261.  
  262. #define DEST_CLIENT    1
  263. #define DEST_TABLE    2
  264.  
  265. #define    NO_ACCESS    0
  266. #define    READ_ACCESS    1
  267. #define    WRITE_ACCESS    2
  268. #define RW_ACCESS    READ_ACCESS | WRITE_ACCESS
  269.  
  270. static char *comTable[] = { 
  271.     "???", "Quit", "Init DB", "Query", "DB List", "Table List", 
  272.     "Field List", "Create DB", "Drop DB", "Reload ACL",
  273.     "Shutdown", "???" };
  274.  
  275.  
  276. #define MALLOC_BLK      1
  277. #define MMAP_BLK        2
  278.  
  279. static char *blockTags[] = {
  280.         "ERROR : Unknown block tag",
  281.         "malloc()",
  282.         "mmap()",
  283.         "ERROR : Unknown block tag"
  284. };
  285.  
  286.  
  287.  
  288.  
  289. void writePkt();
  290. int readPkt();
  291.  
  292.  
  293. #ifndef _MSQL_SERVER_SOURCE
  294.  
  295. extern    char    *msqlHomeDir;
  296.  
  297. #endif
  298.